package com.wang.powerframeJ.util;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 流操作工具类
 * @author HeJiawang
 * @date   2017.08.04
 */
public final class StreamUtil {

	private static final Logger LOGGER = LoggerFactory.getLogger(StreamUtil.class);
	
	/**
	 * 从输入流中获取数据
	 * @param is
	 * @return
	 */
	public static String getString( InputStream is ) {
		StringBuilder sb = new StringBuilder();
		try {
			BufferedReader reader = new BufferedReader( new InputStreamReader(is) );
			String line;
			while( ( line = reader.readLine() ) != null ) {
				sb.append(line);
			}
		} catch (Exception e) {
			LOGGER.error(" get String failure ", e);
			throw new RuntimeException(e);
		}
		
		return sb.toString();
	}

	/**
	 * 将输入流复制到输出流
	 * @param inputStream
	 * @param outputStream
	 */
	public static void copyStream(InputStream inputStream, OutputStream outputStream) {
		try {
			int length;
			byte[] buffer = new byte[ 4 * 1024 ];
			while( ( length=inputStream.read(buffer, 0, buffer.length) ) != -1 ) {
				outputStream.write(buffer, 0, length);
			}
			
			outputStream.flush();
		} catch (Exception e) {
			LOGGER.error(" copy stream failure ", e);
			throw new RuntimeException(e);
		} finally {
			try {
				inputStream.close();
				outputStream.close();
			} catch (Exception e) {
				LOGGER.error(" close stream failure ", e);
			}
		}
	}
	
}
